package com.abc.recycling.service;

import com.abc.recycling.model.Notification;
import com.abc.recycling.model.NotificationTemplate;
import java.util.List;
import java.util.Map;

public interface NotificationService {
    
    /**
     * 创建系统公告
     */
    void createSystemNotification(String title, String content, String receiverType);
    
    /**
     * 创建用户消息
     */
    void createUserNotification(String title, String content, Long receiverId);
    
    /**
     * 使用模板创建消息
     */
    void createNotificationFromTemplate(String templateCode, Map<String, String> params, Long receiverId);
    
    /**
     * 发送消息
     */
    void sendNotification(Long notificationId);
    
    /**
     * 批量发送消息
     */
    void sendNotifications(List<Long> notificationIds);
    
    /**
     * 标记消息为已读
     */
    void markAsRead(Long notificationId);
    
    /**
     * 获取用户未读消息数量
     */
    long countUnreadNotifications(Long userId);
    
    /**
     * 获取用户的消息列表
     */
    List<Notification> getUserNotifications(Long userId);
    
    /**
     * 获取系统公告列表
     */
    List<Notification> getSystemNotifications();
    
    /**
     * 创建消息模板
     */
    void createTemplate(NotificationTemplate template);
    
    /**
     * 更新消息模板
     */
    void updateTemplate(NotificationTemplate template);
    
    /**
     * 删除消息模板
     */
    void deleteTemplate(Long templateId);
    
    /**
     * 获取所有消息模板
     */
    List<NotificationTemplate> getAllTemplates();
    
    /**
     * 根据代码获取模板
     */
    NotificationTemplate getTemplateByCode(String templateCode);

    /**
     * 删除通知
     */
    void deleteNotification(Long notificationId);

    /**
     * 根据ID获取模板
     */
    NotificationTemplate getTemplateById(Long templateId);

    /**
     * 更新模板状态
     */
    void updateTemplateStatus(Long templateId, Integer status);
} 